package com.ssy.lingxi.member.merchant.service.feign;

import com.ssy.lingxi.member.merchant.entity.MemberRelationDO;
import com.ssy.lingxi.message.api.vo.request.SystemMessageRequest;

import java.util.List;

/**
 * 调用消息服务Feign接口
 * @author yzc
 * @date 2021/6/23 15:47
 **/
public interface IMessageFeignService {

    /**
     * 会员消息
     */
    SystemMessageRequest buildSystemMessage(Long memberId, Long roleId, String messageCode, List<String> params);

    /**
     * 会员用户消息
     */
    SystemMessageRequest buildUserSystemMessage(Long memberId, Long roleId, Long userId, String messageCode, List<String> params);

    /**
     * 发送会员消息
     * @param memberId 会员id
     * @param roleId 角色id
     * @param messageCode 消息编码
     * @param params 参数
     */
    void sendSystemMessage(Long memberId, Long roleId, String messageCode, List<String> params);

    /**
     * 发送会员消息(批量)
     * @param request 接口参数
     */
    void batchSendSystemMessage(List<SystemMessageRequest> request);

    /**
     * 发送会员用户消息
     * @param memberId 会员id
     * @param roleId 角色id
     * @param userId 用戶id
     * @param messageCode 消息编码
     * @param params 参数
     */
    void sendUserSystemMessage(Long memberId, Long roleId, Long userId, String messageCode, List<String> params);

    /**
     * 平台会员审核、会员入库审核时，发送消息
     * @param relation 会员关系
     * @param memberId 消息接收方会员Id
     * @param roleId   消息接收方会员角色Id
     */
    void sendMemberValidateMessage(MemberRelationDO relation, Long memberId, Long roleId);

    /**
     * 平台会员审核、会员入库审核时，发送消息
     * @param relation 会员关系
     */
    void sendMemberValidateMessage(MemberRelationDO relation);
}
